<?php
/**
 * 精简节假日api
 * @copyright tool.bitefu.net
 * @auther xiaogg@sina.cn
 */
class dateapi {
    public $path='data/';//数据目录
    //获取一天的节假日情况
	public function getday($day){
        // 4.1、截取日期前四位，获取年份
	    $year=substr($day,0,4);
        // 4.2、根据年份，获取一年的数据$yeardata
        $yeardata=$this->yeardate($year);
        // 4.3、$yeardata不为空
        if($yeardata){
            // 4.4、截取日期后四位，获取月份日份
            $nowday=substr($day,4,4);
            // 4.5、根据月份日份匹配$yeardata数组中的记录$dayvalue
            $dayvalue=@$yeardata[$nowday];
            // 4.6、$dayvalue不为空 或者 $dayvalue为数字，设置$returndata
            if(!empty($dayvalue) || is_numeric($dayvalue))$returndata= $dayvalue;
        }
        // 4.7、如果$returndata不为空，调用当期对象checkwork()检查日期是否是周未
        if(!is_numeric($returndata))$returndata=$this->checkwork($day);
        // 4.7、如果$returndata为空，将$returndata设置为0
        if(empty($returndata))$returndata=0;
        $return=array('status'=>1,'info'=>$returndata);
        return $return;
	}
    /**
     * 获取一天的节假日情况
     * @param $time 日期时间戳
     * @return int 1 工作日 2调休(工作日) 3周未 4假日
     */
    public function getday2($time){
        $day=date('Y-m-d',$time);$dayarr=explode('-',$day);$year=$dayarr[0];	    
        $yeardata=$this->yeardate($year);
        $returndata = '';
        if($yeardata){
            $nowday=$dayarr[1].$dayarr[2];
            if(is_numeric($yeardata[$nowday])){
                $returndata = $yeardata[$nowday]>0? 4:2;
            }
        }
        if(empty($returndata)){
            $checkholidy=$this->checkwork($day);
            $returndata =$checkholidy>0?3:1;
        }
        return $returndata;
	}
    //检查是否是周未
	public function     checkwork($day){
       // 4.7.1、根据日期获取星期$weak
	   $weak=date("N",strtotime($day));
       // 4.7.2、如果$weak为6、7则返回1，否则返回0
       return in_array($weak,array(6,7))?1:0;
	}
    //检查是否为合法日期
    public function check($day){
        $return=array('status'=>0,'info'=>'');
        if(empty($day) || strlen($day)<4){$return['info']='日期参数不正确';return $return;}        
	    $day_time=strtotime($day);if(date('Ymd',$day_time)!=$day){$return['info']='日期格式错误';return $return;}
        $return['status']=1;
        return $return;
    }
    //获取一年的数据
    private function yeardate($year=''){
        // 4.2.1、年份为空获取当前年
        if(empty($year))$year=date('Y');
        // 4.2.2、 创建$cache实例
        static $cache = array();
        // 4.2.3、 $cache实例不为空，直接返回$cache[$year]
        if(!empty($cache[$year])){return $cache[$year];}
        // 4.2.4、 根据年份获取/data/*_data.json中对应的json文件$new_file
        $new_file=$this->path.$year.'_data.json';
        // 4.2.5、 $new_file文件存在
        if(file_exists($new_file)){
            // 4.2.6、根据$new_file文件，匹配对应的记录，返回$cache[$year]
            $cache[$year]=json_decode(file_get_contents($new_file),true);   
            return $cache[$year];
            // 4.2.7、 $new_file文件不存在，直接返回false
        }else return false;
    }
}
?>